/*
 *   Copyright (c) 2010-2022, SIUFUNG
 */
package net.siufung.market.base.oauth.mapper.entity;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import java.io.Serializable;

/**
 * 客户端信息
 *
 * @author 陈建峰
 * @date 2023-01-12 17:38:40
 * @since v1.0.0
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("oauth_client_details")
public class ClientDetails implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 客户端ID
     */
    @TableId("client_id")
    @NotBlank(message = "客户端ID不能为空!")
    @Length(max=256, message="客户端ID长度不大于256!")
    private String clientId;

    /**
     * 资源ID集合,多个资源时用逗号(,)分隔
     */
    @TableField("resource_ids")
    @Length(max=256, message="资源ID集合,多个资源时用逗号(,)分隔长度不大于256!")
    private String resourceIds;

    /**
     * 客户端密匙
     */
    @TableField("client_secret")
    @Length(max=256, message="客户端密匙长度不大于256!")
    private String clientSecret;

    /**
     * 客户端申请的权限范围
     */
    @TableField("scope")
    @Length(max=256, message="客户端申请的权限范围长度不大于256!")
    private String scope;

    /**
     * 客户端支持的grant_type
     */
    @TableField("authorized_grant_types")
    @Length(max=256, message="客户端支持的grant_type长度不大于256!")
    private String authorizedGrantTypes;

    /**
     * 重定向URI
     */
    @TableField("web_server_redirect_uri")
    @Length(max=256, message="重定向URI长度不大于256!")
    private String webServerRedirectUri;

    /**
     * 客户端所拥有的Spring Security的权限值，多个用逗号(,)分隔
     */
    @TableField("authorities")
    @Length(max=256, message="客户端所拥有的Spring Security的权限值，多个用逗号(,)分隔长度不大于256!")
    private String authorities;

    /**
     * 访问令牌有效时间值(单位:秒)
     */
    @TableField("access_token_validity")
    private Integer accessTokenValidity;

    /**
     * 更新令牌有效时间值(单位:秒)
     */
    @TableField("refresh_token_validity")
    private Integer refreshTokenValidity;

    /**
     * 预留字段
     */
    @TableField("additional_information")
    @Length(max=4096, message="预留字段长度不大于4,096!")
    private String additionalInformation;

    /**
     * 用户是否自动Approval操作
     */
    @TableField("autoapprove")
    @Length(max=256, message="用户是否自动Approval操作长度不大于256!")
    private String autoapprove;


}
